/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.dominio;

import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import model.dao.DaoBase;

/**
 *
 * @author Rodrigo
 */
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "Logg")
public class Logg implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(unique = true, nullable = false)
    private Integer codigo;
    @JoinColumn(name = "codigo_acao", referencedColumnName = "codigo")
    @ManyToOne(optional = false, fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
    private AcaoSistema acao;
    @Column 
    private int codigo_objeto;
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar data_hora;
    @JoinColumn(name = "codigo_usuario", referencedColumnName = "codigo")
    @ManyToOne(optional = true, fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
    private Usuario usuario;

    /**
     * @return the codigo
     */
    public Integer getCodigo() {
        return codigo;
    }

    /**
     * @return the acao
     */
    public AcaoSistema getAcao() {
        return acao;
    }

    /**
     * @return the codigo_objeto
     */
    public int getCodigo_objeto() {
        return codigo_objeto;
    }

    /**
     * @return the data_hora
     */
    public Calendar getData_hora() {
        return data_hora;
    }

    /**
     * @return the usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    /**
     * @param acao the acao to set
     */
    public void setAcao(AcaoSistema acao) {
        this.acao = (AcaoSistema) new DaoBase().buscarPorCodigo(acao.getClass(), acao.getCodigo());
    }

    /**
     * @param codigo_objeto the codigo_objeto to set
     */
    public void setCodigo_objeto(int codigo_objeto) {
        this.codigo_objeto = codigo_objeto;
    }

    /**
     * @param data_hora the data_hora to set
     */
    public void setData_hora(Calendar data_hora) {
        this.data_hora = data_hora;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
}